package com.example.micro_property_springboot.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 资产转移表
 */
@Data
@TableName("asset_transfer")
public class AssetTransfer {
    /**
     * 转移记录ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    @NotNull(message = "转移记录ID不能为空")
    private Long id;

    /**
     * 转移单号
     */
    @TableField(value = "transfer_no")
    @NotNull(message = "转移单号不能为空")
    private String transferNo;

    /**
     * 资产ID
     */
    @TableField(value = "asset_id")
    @NotNull(message = "资产ID不能为空")
    private Long assetId;

    /**
     * 原使用人ID
     */
    @TableField(value = "source_user_id")
    @NotNull(message = "原使用人ID不能为空")
    private Long sourceUserId;

    /**
     * 新使用人ID
     */
    @TableField(value = "target_user_id")
    @NotNull(message = "新使用人ID不能为空")
    private Long targetUserId;

    /**
     * 原部门ID
     */
    @TableField(value = "source_dept_id")
    @NotNull(message = "原部门ID不能为空")
    private Long sourceDeptId;

    /**
     * 新部门ID
     */
    @TableField(value = "target_dept_id")
    @NotNull(message = "新部门ID不能为空")
    private Long targetDeptId;

    /**
     * 转移原因
     */
    @TableField(value = "reason")
    @NotNull(message = "转移原因不能为空")
    private String reason;


    /**
     * 审核人ID
     */
    @TableField(value = "approver_id")
    @NotNull(message = "审核人ID不能为空")
    private Long approverId;

    /**
     * 审核状态（0:待审核 1:已审核 2:已转移 3:已拒绝）
     */
    @TableField(value = "approve_status")
    @NotNull(message = "审核状态不能为空")
    private Integer approveStatus;


    /**
     * 审核时间
     */
    @TableField(value = "approve_time")
    @NotNull(message = "审核时间不能为空")
    private LocalDateTime approveTime;

    /**
     * 审批备注
     */
    @TableField(value = "approve_remark")
    @NotNull(message = "审批备注不能为空")
    private String approveRemark;

    /**
     * 执行转移时间
     */
    @TableField(value = "transfer_time")
    @NotNull(message = "执行转移时间不能为空")
    private LocalDateTime transferTime;

    /**
     * 处理人ID
     */
    @TableField(value = "handler_id")
    @NotNull(message = "处理人ID不能为空")
    private Long handlerId;

    /**
     * 创建时间
     */
    @TableField(value = "create_time")
    @NotNull(message = "创建时间不能为空")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(value = "update_time")
    @NotNull(message = "更新时间不能为空")
    private LocalDateTime updateTime;
}